unity shader 人物走入草丛,草的晃动特效特效怎么做?

您所在的位置:网站首页 unity mesh 法线 unity shader 人物走入草丛,草的晃动特效特效怎么做?

unity shader 人物走入草丛,草的晃动特效特效怎么做?

2023-05-14 21:49| 来源: 网络整理| 查看: 265

在游戏中,草丛可以增加游戏的真实感,但是如果草丛没有动态效果,会使得游戏显得很生硬。因此,在游戏中,我们需要给草丛添加动态效果,让草丛随着人物的移动而摇曳起来。本文将介绍如何使用Unity Shader来实现人物走入草丛,草的晃动特效。

一、草丛模型的制作

首先,我们需要制作草丛的模型。在Unity中,我们可以使用Unity自带的草丛模型,也可以使用第三方模型。如果使用Unity自带的草丛模型,可以在菜单栏中选择GameObject->3D Object->Grass进行创建。如果使用第三方模型,需要将模型导入到Unity中。

二、草丛材质的制作

接下来,我们需要为草丛创建材质。在Unity中,材质是决定物体外观的重要因素之一。我们可以使用Unity自带的材质,也可以自己创建材质。在本例中,我们将创建一个新的材质。

创建新材质

在Unity中,我们可以在Project面板中右键点击空白处,选择Create->Material来创建新材质。

编辑材质

在Inspector面板中,我们可以编辑材质的属性。在本例中,我们需要编辑以下属性:

(1)Diffuse:设置草丛的颜色。

(2)Normal Map:设置草丛的法线贴图,用于模拟草丛的凹凸感。

(3)Alpha Cutoff:设置草丛的透明度,用于控制草丛的密度。

(4)Transparency:设置草丛的透明度,用于控制草丛的透明度。

三、草丛的晃动特效实现

在上面的两个步骤中,我们已经完成了草丛模型和材质的制作。接下来,我们需要使用Shader来实现草丛的晃动特效。

编写Shader

在Unity中,我们可以使用Shader来实现草丛的晃动特效。Shader是一种用于渲染3D图形的程序,它可以控制物体的外观和动态效果。在本例中,我们将使用Shader来实现草丛的晃动特效。

首先,我们需要创建一个新的Shader。在Unity中,我们可以在Project面板中右键点击空白处,选择Create->Shader来创建新Shader。

然后,我们需要编辑Shader的代码。在本例中,我们将使用Unity自带的Standard Shader作为基础,然后在其基础上添加草丛的晃动特效。下面是Shader的代码:

Shader "Custom/GrassShader"{ Properties{ _MainTex("Texture", 2D) = "white" {} _BumpMap("Normal Map", 2D) = "bump" {} _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5 _Transparency("Transparency", Range(0.0, 1.0)) = 1.0 _WaveAmplitude("Wave Amplitude", Range(0.0, 1.0)) = 0.1 _WaveFrequency("Wave Frequency", Range(0.0, 10.0)) = 1.0 _WindDirection("Wind Direction", Vector) = (1, 1, 0) _WindSpeed("Wind Speed", Range(0.0, 10.0)) = 1.0 } SubShader{ Tags{ "RenderType"="Opaque" } LOD 100 CGPROGRAM #pragma surface surf Standard #pragma target 3.0

.

sampler2D _MainTex;    sampler2D _BumpMap;    float _Cutoff;    float _Transparency;    float _WaveAmplitude;    float _WaveFrequency;    float3 _WindDirection;    float _WindSpeed;    struct Input{        float2 uv_MainTex;        float2 uv_BumpMap;        float3 worldPos;        float3 worldNormal;        float3 worldTangent;        float3 worldBinormal;        float3 worldViewDir;    };    void surf(Input IN, inout SurfaceOutputStandard o){        // Diffuse        o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;        // Normal        o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));        // Alpha        clip(o.Albedo.a - _Cutoff);        // Transparency        o.Alpha = _Transparency;        // Wave        float3 windDir = normalize(_WindDirection);        float3 windVec = windDir * _WindSpeed;        float3 worldPos = IN.worldPos;        float3 offset = worldPos.xz * _WaveFrequency;        float wave = _WaveAmplitude * (sin(dot(offset, windVec)) + 1) / 2;        worldPos.y += wave;        IN.worldPos = worldPos;        // Lighting        o.Metallic = 0;        o.Smoothness = 0.5;        o.Emission = 0;    }    ENDCG } FallBack "Diffuse" }

解析Shader

上面的Shader代码中,我们定义了以下属性:

(1)_MainTex:草丛的颜色贴图。

(2)_BumpMap:草丛的法线贴图。

(3)_Cutoff:草丛的透明度。

(4)_Transparency:草丛的透明度。

(5)_WaveAmplitude:草丛的晃动幅度。

(6)_WaveFrequency:草丛的晃动频率。

(7)_WindDirection:草丛的风向。

(8)_WindSpeed:草丛的风速。

在surf函数中,我们实现了以下功能:

(1)Diffuse:设置草丛的颜色。

(2)Normal:设置草丛的法线贴图。

(3)Alpha:控制草丛的透明度。

(4)Transparency:控制草丛的透明度。

(5)Wave:实现草丛的晃动特效。

(6)Lighting:设置草丛的光照效果。

草丛的晃动特效实现

在Shader中,我们使用了sin函数来实现草丛的晃动特效。sin函数可以产生周期性的波形,我们可以通过改变参数来控制波形的幅度和频率。

草丛的晃动特效需要受到风向和风速的影响。我们可以通过改变_WindDirection和_WindSpeed来控制风向和风速。

四、示例

在本例中,我们将使用Unity自带的草丛模型,创建一个新的材质,并使用上面的Shader来实现草丛的晃动特效。

创建新材质

在Unity中,我们可以在Project面板中右键点击空白处,选择Create->Material来创建新材质。

编辑材质

在Inspector面板中,我们可以编辑材质的属性。在本例中,我们需要编辑以下属性:

(1)Diffuse:设置草丛的颜色。

(2)Normal Map:设置草丛的法线贴图。

(3)Alpha Cutoff:设置草丛的透明度,用于控制草丛的密度。

(4)Transparency:设置草丛的透明度,用于控制草丛的透明度。

创建Shader

在Unity中,我们可以在Project面板中右键点击空白处,选择Create->Shader来创建新Shader。

然后,我们需要编辑Shader的代码。在本例中,我们将使用上面的Shader代码。

将Shader应用到材质中

将Shader应用到材质中,我们需要在材质的Inspector面板中选择Shader。在本例中,我们选择Custom/GrassShader。

将材质应用到草丛模型中

将材质应用到草丛模型中,我们需要在Scene面板中选择草丛模型,然后将材质拖拽到Mesh Renderer组件的Material属性中。

测试效果

在Scene视图中,我们可以看到草丛已经具有了晃动特效。我们可以通过改变_WaveAmplitude和_WaveFrequency来控制草丛的晃动幅度和频率。我们也可以通过改变_WindDirection和_WindSpeed来控制风向和风速。

本文教程就到这里了,欢迎加入我的简介游戏开发学习交流群~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3